/*!
\copyright  Copyright (c) 2019 - 2025 Qualcomm Technologies International, Ltd.
            All Rights Reserved.
            Qualcomm Technologies International, Ltd. Confidential and Proprietary.
\file
\brief      Microphone configuration types
*/

#ifndef MICROPHONES_CONFIG_H_
#define MICROPHONES_CONFIG_H_

#include <audio_plugin_if.h>

typedef struct {
    /*! Mic Bias Pin identifier */
    bias_config_t id;
    /*! Voltage setting \see mic_bias_if.h for value to Voltage mapping */
    unsigned voltage;
} microphones_bias_config_t;

typedef struct {
    /*! Audio related microphone parameters */
    audio_mic_params params;
    /*! List of microphone roles.
        The relationship of roles to microphone is N:1. I.e. a single microphone
        can have multiple roles. But a sspecific role can only be assigned to a single
        microphone.
        Chain endpoint roles can be added to this list which the code can use
        when creating an audio chain to map chain inputs to microphones to connect
    */
    const int* roles;
    /*! Number of role entries in roles*/
    unsigned num_roles;
} microphones_mic_config_t;

typedef struct {
    /*! List of microphone configurations */
    microphones_mic_config_t *mics_config;
    /*! Number of microphone configurations */
    unsigned num_mics;
    /*! List of bias hardware configurations */
    microphones_bias_config_t *bias_config;
    /*! Number of bias hardware configurations */
    unsigned num_bias;
} microphones_config_t;

#endif /* MICROPHONES_CONFIG_H_ */
